"""
计算1～100000之间所有素数的个数， 要求如下:
- 编写函数判断一个数字是否为素数，然后统计素数的个数；
-对比1: 对比使用多进程和不使用多进程两种方法的统计速度。
-对比2：对比开启4个多进程和开启10个多进程两种方法的速度。
"""
import time
from multiprocessing import Pool

def is_prime(n):
    global count
    if n < 2:
        # print("这个数不是素数！")
        pass
    else:
        for i in range(2, n):
            if n % i == 0:
                # print("这个数不是素数！")
                break
        else:
            # print("这个数是素数！")
            count += 1

count = 0
if __name__ == '__main__':

    start = time.time()
    '''
    # 不使用多进程
    # spend 17.222429513931274 seconds
    count = 0
    for i in range(1, 100001):
        is_prime(i)
    
    # 开启4个多进程
    # spend 7.802056789398193 seconds
    with Pool(4) as p:
        p.map(is_prime, range(100000))
    p.join()
    end = time.time()
    print(f"spend {end - start} seconds")
    '''

    # 开启10个多进程
    # spend 6.468008518218994 seconds
    with Pool(10) as p:
        p.map(is_prime, range(100000))
    p.join()
    end = time.time()
    print(f"spend {end - start} seconds")


